package com.lzy.wzy.utils;

import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

@Component
public class JsonUtil {

    @Autowired
    private Gson gson;


    //Object对象转成JSON字符串后，进一步转成字节数组
    public  byte[] Object2JsonBytes(Object obj) {

        //把对象转换成JSON

        String json = pojoToJson(obj);
        return json.getBytes(StandardCharsets.UTF_8);
    }

    //反向：字节数组，转成JSON字符串，转成Object对象
    public  <T> T JsonBytes2Object(byte[] bytes, Class<T> tClass) {
        //字节数组，转成JSON字符串
        try {
            String json = new String(bytes, StandardCharsets.UTF_8);
            return jsonToPojo(json, tClass);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //使用谷歌 Gson 将 POJO 转成字符串
    public  String pojoToJson(Object obj) {
        return gson.toJson(obj);
    }

    //使用阿里 Fastjson 将字符串转成 POJO对象
    public  <T> T jsonToPojo(String json, Class<T> tClass) {
        return JSONObject.parseObject(json, tClass);
    }
}
